import 'package:dio/dio.dart';
import 'package:palmf_hid/common/utils/net/http_util.dart';
import 'package:palmf_hid/common/utils/utils.dart';

class ResponseInterceptor extends InterceptorsWrapper {
  ///这里可以根据不同的业务代码 扔出不同的异常
  ///具体要根据后台进行协商
  /// [ViewStateModel] 的子类会对此处进行捕捉，捕捉后逻辑可以在[ExceptionHandler]中处理
  /// * 此处的异常捕捉功能仅在[loadData]中有效
  /// * 如果需要独立收到Api的业务异常，见此类[ExceptionBinding]
  @override
  void onResponse(Response response, ResponseInterceptorHandler handler) {
    MyLogUtil().i("网络返回$response");
    if (response.data is Map) {
      //判断是否需要登录
      ResponseData responseData = ResponseData.fromResponse(response);
      if (responseData.success) {
        return super.onResponse(response, handler);
      }else {
        ///这里可以根据不同的业务代码 扔出不同的异常
        ///具体要根据后台进行协商
        MyLoadingUtil.hideLoading();
        return super.onResponse(response, handler);
      }
    } else {
      MyLoadingUtil.hideLoading();
      MyToastUtil.show("网络异常");
      MyLogUtil().i("登录超时,请重新登录");
      return super.onResponse(response, handler);
    }
  }
}

abstract class BaseResponseData {
  int? code = 0;
  String? msg;
  dynamic data;

  bool get success;

  BaseResponseData({this.code, this.msg, this.data});

  @override
  String toString() {
    return 'BaseRespData{code: $code, message: $msg, data: $data}';
  }
}
